<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script>
	// >  在`ES5`中，`JS`的作用域分为全局作用域和局部作用域。通常是用函数区分的，函数内部属于局部作用域。
	// es中声明全局变量
	// var username = "zhangsan";
	// // console.log(username);// f12 或右击检查查看输出结果。
    //
	// // 函数内部声明:声明了一个函数，函数的名字地为fn
	// function fn() {
	// 	// 函数体
    //     var age = 100;
	// 	console.log(age);
	// }
	// fn();
	// console.log(age);


	// >  `ES5` 只有全局作用域和函数作用域，没有块级作用域，这带来很多不合理的场景

    // if(1===1){
	// 	let username = "lisi";
    // }
	// console.log(username);



	// * 内层变量(在块级作用域中声明的)可能会覆盖外层变量。

    // es5
    // var age = 1;// 全局
	// function fn(){
	// 	var age = 2;// 局部
    // }
    // fn();
	// {
	// 	// 块级作用域
    //     var age = 100;
    // }
	// console.log(age);// 100
    //
    // // es6
    // let username = "wangwu";
	// {
	// 	let username = "zhaoliu";
    // }
	// console.log(username);

	// * 用来计数的循环变量泄露为全局变量。
    // es5
    // for(var i=0;i<10;i++){
	// 	console.log(i);// 0 1 2 3 4 5 6 7 8 9
    // }
	// console.log(i);// 10

    // es6
	// for(let i=0;i<10;i++){
	// 	console.log(i);// 0 1 2 3 4 5 6 7 8 9
	// }
	// console.log(i);// 10

	// es6中声明的变量拥有块级作用域。
</script>
<script>
	// console.log(username);
</script>
</html>